
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.BitSet;

public class funcoes {
  /*
 ********************************************************************************** 
  Classe que abriga funções de controle geral
 **********************************************************************************
 */
  
  //Carrega um arraylist com os dados contidos no arquivo texto contido no caminho do parâmetro path
  public static ArrayList read(String path){
    try {
        BufferedReader in = new BufferedReader(new FileReader(path));
            int i=0;
            ArrayList result = new ArrayList();
            while (in.ready()){
              
                result.add(in.readLine());
                
            }
            in.close();
            return result;
    } catch (IOException e) {
      System.out.println(e.getMessage());
      return null;
      
    }
    
  }
  
  
  
  
  //Recebe uma string binária a como parâmetro e a tranforma em um bitSet correspondente
  public static BitSet strToBitSet(String a){
      BitSet b = new BitSet();
      for (int j=0; j < a.length(); j++){
        b.set(j, a.charAt(j) == '1');  
      }
      return b;
  }
  
  
  //Transforma um boolean em byte(true = 1, false = 0)
  private static byte boolToByte(boolean b){
    if(b){
      return 1;
    }else{
      return 0;
    }
  }
  
  
  //Transforma um bitSet em uma string binária com o tamanho pasado como parâmetro, 
  //parâmetro imprimeReversa imprime o bitSet de forma reversa(de tras para a frente, para leitura das instruções, por exemplo)
  public static String bitSetStr(BitSet b, int tamanho, boolean imprimeReversa){
    String a="";
    if (imprimeReversa){
        for (int i = tamanho-1; i>=0; i--) {
          a += boolToByte(b.get(i));
        }
    }else{
       for (int i = 0; i<tamanho; i++) {
          a += boolToByte(b.get(i));
        } 
    }    
    if (a.equalsIgnoreCase("")){
      return "0";  
    }else{
      return a;
    }
  }
  

  
  public static void imprime(String msg){
      System.out.println(msg); 
  }
  
  
}
